package thread;

/**
 *  Thread:线程
 *  多线程
 *
 *  线程:线性的执行流程,指的是程序中一个单一的顺序执行
 *  多线程:多个循序执行流程,"同时"执行
 */
public class ThreadDemo1 {
    public static void main(String[] args) {
        Thread t1 = new MyThread1();
        Thread t2 = new MyThread2();
        //启动线程要调用的start()方法,而不是直接调用run方法
        //当我们调用一个线程的start()方法后,线程就启动了,随后run方法会很快被执行
        t1.start();
        t2.start();
    }
}

/**
 *  这种创建方式的优点:
 *      结构简单,适合匿名内部类方式创建
 *  缺点:
 *      1.由于java是单继承的,这导致如果我们继承了Thread就无法再继承其他类去复用方法了
 *      2.重写run方法,将线程要执行的任务定义在线程中,这导致线程与任务是紧耦合的
 */
class MyThread1 extends Thread{  //第一步继承Thread
    public void run() {//第二步重写run方法,run方法中是线程要执行的代码
        for (int i = 0; i < 1000; i++) {
            System.out.println("你是谁啊?");
        }
    }
}

class MyThread2 extends Thread{
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("开门,查水表!");
        }
    }
}

